1124╨╥╔╬╘ IS A SET OF ╟┼╧╙ PRINTER DRIVERS FOR THE ╨ANASONIC ╦╪-╨1124 PRINTER IN BOTH THE ┼PSON ╠╤-2500 AND ╔┬═ ╨ROPRINTER ╪24 MODES, USING EITHER 8-PIN OR 24-PIN BIT IMAGE PRINTING.
╘HE MAJOR PROBLEM HERE IS THE TRANSLATION OF ╟┼╧╙'S 80-CARD (640-BYTE) SCREEN LINE OUTPUT INTO A PRINTED LINE WITH VARIOUS DOT DENSITIES WITHIN THE CONFINES OF A STANDARD 8.5 INCH PAPER WIDTH (8 INCH PRINT WIDTH).
─OT DENSITIES AVAILABLE ON THE 1124 ARE, IN DOTS PER INCH (DPI): 60, 80, 90, 120, 180, 240, AND 360.
┴ 640-BYTE SCREEN LINE PRINTED AT 60 DPI WILL TAKE 640/60 = 10.67 INCHES, WHICH IS MORE THAN THE 8 INCH WIDTH AVAILABLE. ╘HE 1124 WILL USE ONLY ENOUGH BYTES TO FILL THE PRINTED LINE (480-BYTES), RESULTING IN A TRUNCATED SCREEN LINE. ╔N ADDITION, THE PRINTED GRAPHIC IMAGE WILL BE 133% LARGER THAN IF THE WHOLE SCREEN LINE WAS SQUEEZED INTO THE 8 INCH PAPER WIDTH.
╘HREE SOLUTIONS COME TO MIND: 1) USE A SCREEN LINE OUTPUT OF 60-CARDS (480-BYTES), WHICH WILL NEATLY FIT INTO A 8 INCH PAPER WIDTH AT 60 DPI (MAKE SURE THAT YOUR GRAPHIC SCREEN IMAGES ARE NOT WIDER THAT 60-CARDS); 2) USE AN OUTPUT OF 80-CARDS AND BE CONTENT WITH A TRUNCATED SCREEN LINE AND A SOMEWHAT WIDE PRINTED IMAGE (THIS IS NOT TOO BAD IF YOUR SCREEN IMAGE IS LESS THAN 60-CARDS WIDE); OR 3) USE A TRANSLATION ALGORITHM THAT COMPRESSES 640-BYTES INTO 480-BYTES, MOST SIMPLY BY DISCARDING 25% OF THE BYTES (EG., EVERY FOURTH BYTE), WHICH WILL DEGRADE MOST IMAGES (ALTHOUGH SOME CAN STAND THIS KIND OF COMPRESSION).
┴T THE OTHER END OF THE DENSITY SPECTRUM, A 640-BYTE SCREEN LINE PRINTED AT 360 DPI WILL TAKE 640/360 = 1.78 INCHES, CONSIDERABLY LESS THAN THE 8 INCH PAPER WIDTH AVAILABLE, RESULTING IN VERY SMALL PRINTED IMAGES (WHICH, NEVERTHELESS, MAY BE USEFUL FOR SPECIAL EFFECTS).
╘HE SOLUTION HERE, IF YOU WANT THE FULL PAPER WIDTH TO REPRESENT THE FULL SCREEN WIDTH, IS TO USE A TRANSLATION ALGORITHM THAT EXPANDS 640-BYTES INTO THE 360*8 = 2880 DOTS THAT CAN BE PRINTED IN 8 INCHES AT 360 DPI. ╘HE TRANSLATION ALGORITHM, HOWEVER, IS NOT AS SIMPLE AS MIGHT BE SUPPOSED SINCE 2880 IS NOT AN INTEGER MULTIPLE OF 640 (2880/640 = 4.5). ╘HREE POSSIBLE ALGORITHMS ARE 1) PRINT EACH DOT 4 TIMES, GIVING 2560 DOTS, A 7.11 INCH PRINTED WIDTH, AND A PRINTED IMAGE 88% AS WIDE AS IT SHOULD BE; 2) PRINT EACH DOT 4 OR 5 TIMES ALTERNATELY, GIVING THE 2880 DOTS WE NEED, A FULL 8 INCH PRINT WIDTH AND A "NORMAL" WIDTH PRINTED IMAGE, BUT SOMEWHAT DISTORTING THE SCREEN IMAGE (NOT VERY APPARENT, HOWEVER, AT THE SMALL DOT SPACINGS OF 360 DPI); OR 3) PRINT EACH DOT 5 TIMES, GIVING 3200 DOTS, A 8.88 INCH PRINTED WIDTH (WHICH WILL BE TRUNCATED BY THE PRINTER), AND A PRINTED IMAGE 111% WIDER THAN IT SHOULD BE.
╔ ENGAGE IN THIS BRIEF DISCUSSION OF TRANSLATION PROBLEMS ONLY TO SHOW THAT MANY PRINTER DRIVERS ARE NECESSARY IF YOU WANT TO COVER ALL POSSIBLE WAYS TO PRINT A ╟┼╧╙ (OR ANY OTHER) SCREEN. ├OMPROMISE IS NEEDED. 1124╨╥╔╬╘ PROVIDES DRIVERS FOR 60-CARD AND 80-CARD LINES WITH TRANSLATION ALGORITHMS AS FOLLOWS:
╫HENEVER BYTES ARE ADDED, AS ABOVE, TO EXPAND THE PRINTED LINE TO FIT AN 8 INCH PRINT WIDTH YOU ARE ESSENTIALLY INTERPOLATING BETWEEN TWO ADJACENT COLUMNS OF 8 DOTS (PIXELS) ON THE SCREEN. ╘HE SIMPLEST INTERPOLATION ALGORITHM IS TO JUST REPEAT THE FIRST DOT COLUMN SEVERAL TIMES, THUS ASSUMING AN ABRUPT, RATHER THAN GRADUAL, CHANGE BETWEEN ADJACENT COLUMNS. ╘HIS DOES NOT DEGRADE THE SCREEN IMAGE, BUT IT CERTAINLY DOES NOT IMPROVE IT ANY. ╓ARIOUS OTHER INTERPOLATION ALGORITHMS MAY BE USED, INVOLVING ┴╬─ING, ╧╥ING, BIT SHIFTING, ETC. 1124╨╥╔╬╘ USES THE SIMPLEST REPEAT INTERPOLATION ALGORITHM ONLY (SORRY ABOUT THAT; MAYBE LATER VERSIONS WILL BE DIFFERENT).
╞OR 24-PIN PRINTING THE 8-BITS IN ONE BYTE OF ╟┼╧╙ OUTPUT (REPRESENTING 8 VERTICAL PIXELS ON THE SCREEN) MUST BE EXPANDED TO FIT 24 PINS. 1124╨╥╔╬╘ PROVIDES THREE VERTICAL SIZE VARIATIONS FOR 24-PIN PRINTING: 1) FULL SIZE, WHERE EACH ╟┼╧╙ BIT IS ASSIGNED TO 3 PINS (ALL 24 PINS USED); 2) 2/3 SIZE, WHERE EACH ╟┼╧╙ BIT IS ASSIGNED TO 2 PINS (TOP 16 PINS ONLY USED); AND 3) 1/3 SIZE WHERE EACH ╟┼╧╙ BIT IS ASSIGNED TO 1 PIN (TOP 8 PINS ONLY USED).
╞OR ┴╙├╔╔ PRINTING (EITHER DRAFT OR ╬╠╤) ALL OUTPUT IS CONTROLLED BY THE SETTINGS ON THE FRONT PANEL OF THE 1124 PRINTER. ╘HUS, YOU HAVE FULL ACCESS TO THE BUILT-IN FONTS, PITCHES, AND LINE SPACINGS AVAILABLE ON THE PRINTER.
╔N THE ╠╤-2500 MODE RESET OF THE PRINTER FROM GRAPHICS TO ┴╙├╔╔ MODE IS AUTOMATIC. ╚OWEVER, IN THE ╔┬═ ╪24 MODE ┘╧╒ ═╒╙╘ ═┴╬╒┴╠╠┘ ╥┼╙┼╘ ╘╚┼ ╨╥╔╬╘┼╥ BEFORE ┴╙├╔╔ PRINTING. ╔NCIDENTLY, MAKE SURE THAT THE PRINTER IS SET TO THE SAME MODE (╠╤ OR ╪24) AS THE 1124╨╥╔╬╘ DRIVER BEING USED; OTHERWISE YOU WILL PRINT ONLY GARBAGE.
1124╨╥╔╬╘ USES A DEVICE NUMBER OF 4, A SECONDARY ADDRESS OF 5, AND ADDS A LINEFEED TO EACH CARRIAGE RETURN. ╨LEASE SET YOUR PRINTER INTERFACE ACCORDINGLY. ╘HE FOLLOWING MEMORY LOCATIONS CONTAIN THESE VALUES AND MAY BE CHANGED IF NECESSARY:
$7938 DEVICENUMBER
$793E SECADDR
$793F ADD╠╞ $00 NO LINEFEED $FF ADD LINEFEED
╞OR ╟┼╧╙ ═╠ PROGRAMMERS THE FOLLOWING PROGRAM OUTLINE MAY BE OF INTEREST:
$7900 ╩UMP╘ABLE
$7918 ╨RINTER╬AME
$7929 PRNTBLCARD
$7931 FLAGSANDCOUNTERS
$7947 ╧PEN╞ILE
$7959 ├LOSE╞ILE
$796B ╧PEN╨RINT
$797A ├LOSE╨RINT
$797E ╙END┬YTES
$798F ╙TART╨RINT
$7994 ╙TART╨RINT┴
$79C4 ─ELAY
$79CF ╨RINT┬UFFER
$79F0 ╙TOP╨RINT
$7A09 ╟ET─IMENSIONS
$7A12 ╙TART┴╙├╔╔
$7A1A ╨RINT┴╙├╔╔
$7A4D ╨RINT╨RINT┬UFFER
$7A95 ╘EST┬UFFER
$7AD0 ╔NIT╨RINTER
$7B04 ╔NIT├ODE
$7B0C ╟RETURN
$7B1C ╞ORM╞EED
$7B22 ╥OTATE
$7B35 ╙ET╟RAPHICS
$7BBB ╟RAPHICS├ODE╠╤
$7BC0 ╟RAPHICS├ODE╪24
$7BC6 ╙END┬UFF8
$7BDE ╙END┬UFF24
$7BE5 ╙END┬UFF24-╞ULL
$7C1E ╙END┬UFF24-2/3
$7C4B ╙END┬UFF24-1/3
$7C68 ═ULTAB1 5 TABLES FOR HORIZONTAL INTERPOLATION
$7C70 ═ULTAB2
$7C78 ═ULTAB3
$7C80 ═ULTAB4
$7C88 ═ULTAB5
$7C90 ╘AB╚╚ 5 TABLES FOR 24-PIN VERTICAL INTERPOLATION
$7CA0 ╘AB╚╠
$7CB0 ╘AB╠╚
$7CC0 ╘AB╠╠
$7CD0 ╘AB2
$7CE0 ╧UTPUT┬UFF24
$7CF3 ╔NIT╞OR╨RINT
$7D59 ─┬1─EFINITION
$7D9B ─┬1╔CON╔NFO
$7DC3 ─┬1╙ERVICE╥OUTINES
$7E2C ─┬2─EFINITION
$7E5A ─┬2╔CON╔NFO
$7E72 ─┬2╙ERVICE╥OUTINES
$7E93 ╘AB5 DOTDENCODES TABLE
$7E98 ╘AB6 TABLE OF MULTPLIERS TO FIND LINE LENGTH
$7E9D ╘AB7 TABLE OF DIVISORS TO FIND LINE LENGTH
$7EA2 ╘AB8 LOW ADDRESSES OF ═ULTAB
$7EA7 ╘AB13 TABLE OF VERTSIZE FLAGS
$7EAA ╘AB14 TABLE OF ╠╞SIZE
$7EAD ╘AB15 TABLE OF CARDSDEEP
$7EB0 ╨OS╘AB TABLE OF ─┬ ICON POSITIONS
$7EB5 EMPTYBOXGRAPHICS
$7EBB FILLEDBOXGRAPHICS
$7EBD ─┬╙TRINGS
$7F2B ╨ATCH┴REA
╔ HOPE THESE DRIVERS WILL BE OF USE TO YOU. ├OMMENTS, QUESTIONS, ETC. TO: